//***********************************************************************
//	File:		Raider.h
//	Author:		
//	Course:		SGP 1405
//	Purpose:	
//***********************************************************************
//***********************************************************************
//	Purposfully left blank for all comments regarding this file 
//	
//	
//	
//***********************************************************************



#pragma once
#include "Enemy.h"
class Raider :
	public Enemy
{
public:
	//Trilogy
	Raider(float posX = -1, float posY = -1);
	~Raider() = default;
	Raider(const Raider&) = default; 
	Raider& operator =(const Raider&) = default; 

	//Type
	int GetType() const { return ENT_RAIDER; }

	//Interface
	void Update(float dt);
	void Render();
	void HandleCollision(const IEntity* pOther);
	void HandleEvent();
	SGD::Rectangle GetRect() const;
	void ModifyHealth(float hpAmount);
	void ApplyFriction(float dt);

	void Attack(float dt);
	void Move(void);

	//Raider specific 
	void Shoot(); 

	//Accessors
	float		GetNextAttack		(void)				{ return m_fNextAttack; }
	float		GetAttackCDL		(void)				{ return m_fAttackCDL; }
	int			GetProjectileType	(void)				{ return m_nProjectileType; }
	float GetDamage(void) { return m_fDamage; }


	//Mutators
	void		SetNextAttack		(float na)			{ m_fNextAttack = na; }
	void		SetAttackCDL		(float aCDL)		{ m_fAttackCDL = aCDL; }
	void		SetProjectileType	(int pt)			{ m_nProjectileType = pt; }
	void SetDamage(float dam) { m_fDamage = dam; }


private:
	float m_fDamage = 0.0f;
	float m_fNextAttack = 0.0f;
	float m_fAttackCDL = 0.0f;
	int   m_nProjectileType = 0; 
	Entity* pTarget;
	float m_fTotalHP = 100.0f;
	bool m_bMove = false;

};

